0c43e702a9389a09c0678666fd104ed32ea9e4e3,biojava-structure/src/main/java/org/biojava/nbio/structure/align/ce/CECalculator.java,CECalculator,calc_rmsd,#Atom[]#Atom[]#number#boolean#,1909

Before Change


		Atom[] cod2 = getAtoms(pro2,  strLen,true);

		assert(cod1.length == cod2.length);
		SuperPositionSVD svd = new SuperPositionSVD(cod1, cod2);

		Matrix matrix = svd.getRotation();
		Atom shift = svd.getTranslation();

		if ( storeTransform) {
			r=matrix;
			t = shift;
		}
		for (Atom a : cod2){
			Calc.rotate(a.getGroup(), matrix);
			Calc.shift(a.getGroup(),  shift);
		}
		return SuperPositionSVD.getRMS(cod1, cod2);

After Change


	public double calc_rmsd(Atom[] pro1, Atom[] pro2, int strLen, 
			boolean storeTransform) throws StructureException {

		Atom[] cod1 = getAtoms(pro1,  strLen,false);
		Atom[] cod2 = getAtoms(pro2,  strLen,true);

		Matrix4d trans = SuperPositions.superpose(Calc.atomsToPoints(cod1), 
				Calc.atomsToPoints(cod2));

		Matrix matrix = Matrices.getRotationJAMA(trans);
		Atom shift = Calc.getTranslationVector(trans);

		if ( storeTransform) {
			r = matrix;
			t = shift;
		}
		for (Atom a : cod2)
			Calc.transform(a.getGroup(), trans);
			
		return Calc.rmsd(cod1, cod2);